package base.util.lib;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;

/**
 * 封装 实体类
 */
@SuppressWarnings("all")
public class ModelUtil {

	public  static void setObjectModel(Object obj, ResultSet rs) throws Exception {
		// 获得对象的类型
		Class classType = obj.getClass();
		//System.out.println("********************begin******************************");
		// 获得对象的所有属性
		Field[] fields = classType.getDeclaredFields();
		for (int i = 0; i < fields.length; i++) {
			// 获取数组中对应的属性
			Field field = fields[i];
			String fieldName = field.getName();
			String stringLetter = fieldName.substring(0, 1).toUpperCase();
			String setName = "set" + stringLetter + fieldName.substring(1);
			Method setMethod = classType.getMethod(setName, new Class[] { field
					.getType() });
			//System.out.println("fieldName: "+fieldName);
			// 调用源对象的 getXXX（）方法
			String value = null;
			try {
				value = rs.getString(fieldName);
			} catch (SQLException e) {
				continue;
			}
			//根据 字段类型 设置值
			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String typeName = field.getType().getName();
			//System.out.println("typeName: "+typeName);
			//System.out.println("rs: "+value);
			if (null != value && ""!=value) {
				try {
					if (typeName.equals("java.lang.String")) {
						setMethod.invoke(obj, value);
						
					} else if (typeName.equals("java.lang.Long")) {
						setMethod.invoke(obj, Long.parseLong(value));
						
					} else if (typeName.equals("java.util.Date")) {
						setMethod.invoke(obj,format.parse(value));
						
					} else if (typeName.equals("java.math.BigDecimal")) {
						setMethod.invoke(obj, BigDecimal.valueOf(Long
								.parseLong(value)));
					}
					else if (typeName.equals("java.lang.Double")) {
						setMethod.invoke(obj, java.lang.Double.parseDouble(value));
						
					}
					else if (typeName.equals("java.lang.Integer")) {
						setMethod.invoke(obj,java.lang.Integer.parseInt(value));
						
					}
				} catch (Exception e) {

				}

			}
		//	String getName = "get" + stringLetter + fieldName.substring(1);
		//	// 获取相应的方法
		//	Method getMethod = classType.getMethod(getName, new Class[] {});
			
			// 调用源对象的 getXXX（）方法
		//	Object inf = getMethod.invoke(obj, new Object[] {});
			
		//	System.out.println("// 调用源对象的 getXXX（）方法: "+inf);
		}
		//System.out.println("********************end******************************");

	}
}
